<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="evatr" id="evatr"><span data-lake-id="u469ace56" id="u469ace56">典型回答</span></h1>
  <p data-lake-id="u8853a710" id="u8853a710"><br></p>
  <p data-lake-id="u4d2cd723" id="u4d2cd723"><span data-lake-id="u650ab9a4" id="u650ab9a4">Spring Cloud是基于Spring Boot的</span><strong><span data-lake-id="uece45bf9" id="uece45bf9">分布式系统开发工具</span></strong><span data-lake-id="ucee052a5" id="ucee052a5">，它提供了一系列</span><strong><span data-lake-id="ue0832bb0" id="ue0832bb0">开箱即用</span></strong><span data-lake-id="uaa04321f" id="uaa04321f">的、针对</span><strong><span data-lake-id="u6a38b500" id="u6a38b500">分布式系统</span></strong><span data-lake-id="ue9a1d22f" id="ue9a1d22f">开发的特性和组件，用于帮助开发人员快速构建和管理云原生应用程序。</span></p>
  <p data-lake-id="ufb8e51cf" id="ufb8e51cf"><span data-lake-id="u5451f1fb" id="u5451f1fb">​</span><br></p>
  <p data-lake-id="ub3c2cc36" id="ub3c2cc36"><span data-lake-id="u3626f69c" id="u3626f69c">Spring Cloud的主要目标是解决</span><strong><span data-lake-id="uc6812129" id="uc6812129">分布式系统</span></strong><span data-lake-id="u001ce65c" id="u001ce65c">中的常见问题，例如服务发现、负载均衡、配置管理、断路器、消息总线等。</span></p>
  <p data-lake-id="u33ed1dac" id="u33ed1dac"><span data-lake-id="u61a9024d" id="u61a9024d">​</span><br></p>
  <p data-lake-id="u5923c17a" id="u5923c17a"><span data-lake-id="u21d0119d" id="u21d0119d">所以，单体应用使用Spring，需要快速构建，简化开发使用SpringBoot，构建分布式、微服务应用，使用SpringCloud。</span></p>
  <p data-lake-id="u2118c295" id="u2118c295"><span data-lake-id="u84069070" id="u84069070">​</span><br></p>
  <p data-lake-id="u31021354" id="u31021354"><span data-lake-id="uc4e0e5ec" id="uc4e0e5ec">下图是我画的一张SpringCloud中核心组件起到的作用以及所处的位置：</span></p>
  <p data-lake-id="udf9a6988" id="udf9a6988"><span data-lake-id="ua984ef48" id="ua984ef48">​</span><br></p>
  <p data-lake-id="u8b607c5a" id="u8b607c5a"><img src="https://cdn.nlark.com/yuque/0/2024/png/5378072/1705134884195-c11b183b-fdff-4cd9-9eeb-85236b59d7fb.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_46%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="uc9e289c9" id="uc9e289c9" style="text-align: center"><span data-lake-id="u4a2b7ad6" id="u4a2b7ad6">（图片可放大查看）</span></p>
  <p data-lake-id="ucff6ea05" id="ucff6ea05"><span data-lake-id="ub25ee780" id="ub25ee780">​</span><br></p>
  <p data-lake-id="u33ae54fe" id="u33ae54fe"><span data-lake-id="u5bb70429" id="u5bb70429">下面是Spring Cloud常用的一些组件：</span></p>
  <p data-lake-id="uebac3321" id="uebac3321"><span data-lake-id="u899f57a5" id="u899f57a5">​</span><br></p>
  <ol list="ue6a1556c">
   <li fid="u7891e150" data-lake-id="u7733022d" id="u7733022d"><span data-lake-id="u4fe90b0e" id="u4fe90b0e">Eureka：服务发现和注册中心，可以帮助服务消费者自动发现和调用服务提供者。</span></li>
   <li fid="u7891e150" data-lake-id="uc6d900b3" id="uc6d900b3"><span data-lake-id="ue21b1ed1" id="ue21b1ed1">Ribbon：负载均衡组件，可以帮助客户端在多个服务提供者之间进行负载均衡。</span></li>
   <li fid="u7891e150" data-lake-id="u1a0282b8" id="u1a0282b8">
    <del><span data-lake-id="ua4a43718" id="ua4a43718">OpenFeign：声明式HTTP客户端，可以帮助开发人员更容易地编写HTTP调用代码。</span></del></li>
   <li fid="u7891e150" data-lake-id="u56fbc1f6" id="u56fbc1f6"><span data-lake-id="u9a810118" id="u9a810118">Hystrix：断路器组件，可以帮助应用程序处理服务故障和延迟问题。</span></li>
   <li fid="u7891e150" data-lake-id="u9e712464" id="u9e712464">
    <del><span data-lake-id="u5a29bff3" id="u5a29bff3">Zuul：API网关，可以帮助应用程序处理API请求的路由、负载均衡、安全和监控等问题。</span></del></li>
   <li fid="u7891e150" data-lake-id="u733b2260" id="u733b2260"><span data-lake-id="u56a6726c" id="u56a6726c">Config：分布式配置管理组件，可以帮助应用程序从远程配置源获取配置信息。</span></li>
   <li fid="u7891e150" data-lake-id="u40462751" id="u40462751"><span data-lake-id="ub9220e43" id="ub9220e43">Bus：消息总线组件，可以帮助应用程序实现分布式事件传递和消息广播。</span></li>
   <li fid="u7891e150" data-lake-id="u85af7778" id="u85af7778"><span data-lake-id="ufe3ef7e6" id="ufe3ef7e6">Sleuth：Sleuth是Spring Cloud生态系统中的一个分布式追踪解决方案，可以帮助开发人员实现对分布式系统中请求链路的追踪和监控。 </span></li>
   <li fid="u7891e150" data-lake-id="ue20226ef" id="ue20226ef"><span data-lake-id="uff9f6a09" id="uff9f6a09">Gateway：spring Cloud Gateway是Spring Cloud推出的第二代网关框架，取代Zuul网关。提供了路由转发、权限校验、限流控制等作用。</span></li>
   <li fid="u7891e150" data-lake-id="u4d831012" id="u4d831012"><span data-lake-id="u2508e1eb" id="u2508e1eb">Security：用于简化 OAuth2 认证和资源保护。</span></li>
  </ol>
  <p data-lake-id="u8e9dffc1" id="u8e9dffc1"><br></p>
  <p data-lake-id="u7ebca834" id="u7ebca834"><span data-lake-id="u0e95e7e9" id="u0e95e7e9">但是，有的时候我们并不一定非要全部都用SpringCloud的这些组件，有的时候我们也可以选择其他的开源组件替代。比如经常用Dubbo/gRPC来代替Feign进行服务间调用。经常使用Nacos代替Config+Eureka来实现服务发现/注册及配置中心的功能。</span></p>
  <p data-lake-id="u307c8d33" id="u307c8d33"><br></p>
  <p data-lake-id="u45970e46" id="u45970e46"><span data-lake-id="u42f49338" id="u42f49338">如下图是我画的一个，目前比较主流的SpringCloud的架构：</span></p>
  <p data-lake-id="ued835759" id="ued835759"><span data-lake-id="u4405a74b" id="u4405a74b">​</span><br></p>
  <p data-lake-id="u33cb77b8" id="u33cb77b8"><img src="https://cdn.nlark.com/yuque/0/2024/png/5378072/1705134918847-33319d8b-5f53-4b34-acd8-fde9b7af0bfc.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_43%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="u1ee0dac7" id="u1ee0dac7"><br></p>
  <h1 data-lake-id="UhhFa" id="UhhFa"><span data-lake-id="u1df41caf" id="u1df41caf">扩展知识</span></h1>
  <p data-lake-id="u63882333" id="u63882333"><br></p>
  <h2 data-lake-id="ZgbzX" id="ZgbzX"><span data-lake-id="u12eb806c" id="u12eb806c" class="lake-fontsize-12" style="color: rgb(52, 53, 65)">Spring Cloud Alibaba</span></h2>
  <p data-lake-id="u76827069" id="u76827069"><br></p>
  <p data-lake-id="u7e8d92a1" id="u7e8d92a1"><span data-lake-id="u10fc2f81" id="u10fc2f81">Spring Cloud Alibaba则是由Alibaba推出的分布式开发框架，它主要针对于微服务和云原生应用的开发和部署。Spring Cloud Alibaba提供了一系列的组件和解决方案，例如服务注册、配置管理、消息驱动等。Spring Cloud Alibaba的组件通常基于阿里巴巴自研的组件，例如Nacos、Sentinel、RocketMQ等。</span></p>
  <p data-lake-id="u5dedfd24" id="u5dedfd24"><br></p>
  <p data-lake-id="ubd8411b8" id="ubd8411b8"><span data-lake-id="uc29ae874" id="uc29ae874">依托 Spring Cloud Alibaba，您只需要添加一些注解和少量配置，就可以将 Spring Cloud 应用接入阿里分布式应用解决方案，通过阿里中间件来迅速搭建分布式应用系统。</span></p>
  <p data-lake-id="uf8215b16" id="uf8215b16"><span data-lake-id="u74b957a0" id="u74b957a0">​</span><br></p>
  <p data-lake-id="udacced47" id="udacced47"><span data-lake-id="uf8ac0604" id="uf8ac0604">目前 Spring Cloud Alibaba 提供了如下功能:</span></p>
  <p data-lake-id="u6df2ddc2" id="u6df2ddc2"><span data-lake-id="ucc752a42" id="ucc752a42">​</span><br></p>
  <ol list="u6ba31574">
   <li fid="ue91b2aff" data-lake-id="u01a2faf5" id="u01a2faf5"><span data-lake-id="ue74c95dc" id="ue74c95dc">服务限流降级</span><span data-lake-id="u00c727b6" id="u00c727b6">：支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Dubbo 限流降级功能的接入，可以在运行时通过控制台实时修改限流降级规则，还支持查看限流降级 Metrics 监控。</span></li>
   <li fid="ue91b2aff" data-lake-id="u6773ee39" id="u6773ee39"><span data-lake-id="u254c21d0" id="u254c21d0">服务注册与发现</span><span data-lake-id="u13ea59ee" id="u13ea59ee">：适配 Spring Cloud 服务注册与发现标准，默认集成了 Ribbon 的支持。</span></li>
   <li fid="ue91b2aff" data-lake-id="u2b95a9a6" id="u2b95a9a6"><span data-lake-id="u8182a1c9" id="u8182a1c9">分布式配置管理</span><span data-lake-id="u801681ca" id="u801681ca">：支持分布式系统中的外部化配置，配置更改时自动刷新。</span></li>
   <li fid="ue91b2aff" data-lake-id="u447b70aa" id="u447b70aa"><span data-lake-id="u8d4db3ab" id="u8d4db3ab">Rpc服务</span><span data-lake-id="u3033ecfb" id="u3033ecfb">：扩展 Spring Cloud 客户端 RestTemplate 和 OpenFeign，支持调用 Dubbo RPC 服务</span></li>
   <li fid="ue91b2aff" data-lake-id="u1d6048a5" id="u1d6048a5"><span data-lake-id="u3506e814" id="u3506e814">消息驱动能力</span><span data-lake-id="u514559c0" id="u514559c0">：基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。</span></li>
   <li fid="ue91b2aff" data-lake-id="ub08787bd" id="ub08787bd"><span data-lake-id="u15877d7a" id="u15877d7a">分布式事务</span><span data-lake-id="u27436f00" id="u27436f00">：使用 @GlobalTransactional 注解， 高效并且对业务零侵入地解决分布式事务问题。</span></li>
   <li fid="ue91b2aff" data-lake-id="u9e52fd26" id="u9e52fd26"><span data-lake-id="ue79f409f" id="ue79f409f">阿里云对象存储</span><span data-lake-id="u81f041db" id="u81f041db">：阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。</span></li>
   <li fid="ue91b2aff" data-lake-id="u23b62674" id="u23b62674"><span data-lake-id="ufd2cef39" id="ufd2cef39">分布式任务调度</span><span data-lake-id="u79d65c8b" id="u79d65c8b">：提供秒级、精准、高可靠、高可用的定时（基于 Cron 表达式）任务调度服务。同时提供分布式的任务执行模型，如网格任务。网格任务支持海量子任务均匀分配到所有 Worker（schedulerx-client）上执行。</span></li>
   <li fid="ue91b2aff" data-lake-id="u42e34b1e" id="u42e34b1e"><span data-lake-id="ue08fa47e" id="ue08fa47e">阿里云短信服务：覆盖全球的短信服务，友好、高效、智能的互联化通讯能力，帮助企业迅速搭建客户触达通道。</span></li>
  </ol>
  <p data-lake-id="uaae59171" id="uaae59171"><span data-lake-id="ud6eda3ea" id="ud6eda3ea">​</span><br></p>
  <h2 data-lake-id="JqzkO" id="JqzkO"><span data-lake-id="u59607daa" id="u59607daa" class="lake-fontsize-12" style="color: rgb(52, 53, 65)">Spring Cloud Tencent</span></h2>
  <p data-lake-id="ufc2d5d6d" id="ufc2d5d6d"><br></p>
  <p data-lake-id="ua62ae129" id="ua62ae129"><br></p>
  <p data-lake-id="u6adf3810" id="u6adf3810"><span data-lake-id="uc971d5cc" id="uc971d5cc">Spring Cloud Tencent 是腾讯开源的一站式微服务解决方案。</span></p>
  <p data-lake-id="udb2572a4" id="udb2572a4"><span data-lake-id="ub25487b1" id="ub25487b1">​</span><br></p>
  <p data-lake-id="u6d4cfe65" id="u6d4cfe65"><span data-lake-id="u92ad94ce" id="u92ad94ce">Spring Cloud Tencent 实现了Spring Cloud 标准微服务 SPI，开发者可以基于 Spring Cloud Tencent 快速开发 Spring Cloud 云原生分布式应用。</span></p>
  <p data-lake-id="uc2ec7797" id="uc2ec7797"><span data-lake-id="ub083ac78" id="ub083ac78">​</span><br></p>
  <p data-lake-id="udbd059f2" id="udbd059f2"><span data-lake-id="u933f80da" id="u933f80da">Spring Cloud Tencent提供的能力包括但不限于：</span></p>
  <p data-lake-id="u7707f8c2" id="u7707f8c2"><span data-lake-id="u9670bd83" id="u9670bd83">​</span><br></p>
  <p data-lake-id="u2c534120" id="u2c534120"><img src="https://cdn.nlark.com/yuque/0/2023/png/5378072/1677860768875-e23765e0-0fdb-4033-b9d0-0af4a26fc1fd.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_59%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
 </body>
</html>